/*
*
* Copyright (c) 2018 Huawei Technologies Co.,Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#ifndef SBR_ERR_H
#define SBR_ERR_H
#include <errno.h>

#ifdef __cplusplus
/* *INDENT-OFF* */
extern "C" {
/* *INDENT-ON* */
#endif

#ifdef SBR_PROVIDE_ERRNO
#define EPERM 1                 /* Operation not permitted */
#define ENOENT 2                /* No such file or directory */
#define ESRCH 3                 /* No such process */
#define EINTR 4                 /* Interrupted system call */
#define EIO 5                   /* I/O error */
#define ENXIO 6                 /* No such device or address */
#define E2BIG 7                 /* Arg list too long */
#define ENOEXEC 8               /* Exec format error */
#define EBADF 9                 /* Bad file number */
#define ECHILD 10               /* No child processes */
#define EAGAIN 11               /* Try again */
#define ENOMEM 12               /* Out of memory */
#define EACCES 13               /* Permission denied */
#define EFAULT 14               /* Bad address */
#define ENOTBLK 15              /* Block device required */
#define EBUSY 16                /* Device or resource busy */
#define EEXIST 17               /* File exists */
#define EXDEV 18                /* Cross-device link */
#define ENODEV 19               /* No such device */
#define ENOTDIR 20              /* Not a directory */
#define EISDIR 21               /* Is a directory */
#define EINVAL 22               /* Invalid argument */
#define ENFILE 23               /* File table overflow */
#define EMFILE 24               /* Too many open files */
#define ENOTTY 25               /* Not a typewriter */
#define ETXTBSY 26              /* Text file busy */
#define EFBIG 27                /* File too large */
#define ENOSPC 28               /* No space left on device */
#define ESPIPE 29               /* Illegal seek */
#define EROFS 30                /* Read-only file system */
#define EMLINK 31               /* Too many links */
#define EPIPE 32                /* Broken pipe */
#define EDOM 33                 /* Math argument out of domain of func */
#define ERANGE 34               /* Math result not representable */
#define EDEADLK 35              /* Resource deadlock would occur */
#define ENAMETOOLONG 36         /* File name too long */
#define ENOLCK 37               /* No stored locks available */
#define ENOSYS 38               /* Function not implemented */
#define ENOTEMPTY 39            /* Directory not empty */
#define ELOOP 40                /* Too many symbolic links encountered */
#define EWOULDBLOCK EAGAIN      /* Operation would block */
#define ENOMSG 42               /* No message of desired type */
#define EIDRM 43                /* Identifier removed */
#define ECHRNG 44               /* Channel number out of range */
#define EL2NSYNC 45             /* Level 2 not synchronized */
#define EL3HLT 46               /* Level 3 halted */
#define EL3RST 47               /* Level 3 reset */
#define ELNRNG 48               /* Link number out of range */
#define EUNATCH 49              /* Protocol driver not attached */
#define ENOCSI 50               /* No CSI structure available */
#define EL2HLT 51               /* Level 2 halted */
#define EBADE 52                /* Invalid exchange */
#define EBADR 53                /* Invalid request descriptor */
#define EXFULL 54               /* Exchange full */
#define ENOANO 55               /* No anode */
#define EBADRQC 56              /* Invalid request code */
#define EBADSLT 57              /* Invalid slot */

#define EDEADLOCK EDEADLK

#define EBFONT 59               /* Bad font file format */
#define ENOSTR 60               /* Device not a stream */
#define ENODATA 61              /* No data available */
#define ETIME 62                /* Timer expired */
#define ENOSR 63                /* Out of streams resources */
#define ENONET 64               /* Machine is not on the network */
#define ENOPKG 65               /* Package not installed */
#define EREMOTE 66              /* Object is remote */
#define ENOLINK 67              /* Link has been severed */
#define EADV 68                 /* Advertise error */
#define ESRMNT 69               /* Srmount error */
#define ECOMM 70                /* Communication error on send */
#define EPROTO 71               /* Protocol error */
#define EMULTIHOP 72            /* Multihop attempted */
#define EDOTDOT 73              /* RFS specific error */
#define EBADMSG 74              /* Not a data message */
#define EOVERFLOW 75            /* Value too large for defined data type */
#define ENOTUNIQ 76             /* Name not unique on network */
#define EBADFD 77               /* File descriptor in bad state */
#define EREMCHG 78              /* Remote address changed */
#define ELIBACC 79              /* Can not access a needed shared library */
#define ELIBBAD 80              /* Accessing a corrupted shared library */
#define ELIBSCN 81              /* .lib section in a.out corrupted */
#define ELIBMAX 82              /* Attempting to link in too many shared libraries */
#define ELIBEXEC 83             /* Cannot exec a shared library directly */
#define EILSEQ 84               /* Illegal byte sequence */
#define ERESTART 85             /* Interrupted system call should be restarted */
#define ESTRPIPE 86             /* Streams pipe error */
#define EUSERS 87               /* Too many users */
#define ENOTSOCK 88             /* Socket operation on non-socket */
#define EDESTADDRREQ 89         /* Destination address required */
#define EMSGSIZE 90             /* Message too long */
#define EPROTOTYPE 91           /* Protocol wrong type for socket */
#define ENOPROTOOPT 92          /* Protocol not available */
#define EPROTONOSUPPORT 93      /* Protocol not supported */
#define ESOCKTNOSUPPORT 94      /* Socket type not supported */
#define EOPNOTSUPP 95           /* Operation not supported on transport endpoint */
#define EPFNOSUPPORT 96         /* Protocol family not supported */
#define EAFNOSUPPORT 97         /* Address family not supported by protocol */
#define EADDRINUSE 98           /* Address already in use */
#define EADDRNOTAVAIL 99        /* Cannot assign requested address */
#define ENETDOWN 100            /* Network is down */
#define ENETUNREACH 101         /* Network is unreachable */
#define ENETRESET 102           /* Network dropped connection because of reset */
#define ECONNABORTED 103        /* Software caused connection abort */
#define ECONNRESET 104          /* Connection reset by peer */
#define ENOBUFS 105             /* No buffer space available */
#define EISCONN 106             /* Transport endpoint is already connected */
#define ENOTCONN 107            /* Transport endpoint is not connected */
#define ESHUTDOWN 108           /* Cannot send after transport endpoint shutdown */
#define ETOOMANYREFS 109        /* Too many references: cannot splice */
#define ETIMEDOUT 110           /* Connection timed out */
#define ECONNREFUSED 111        /* Connection refused */
#define EHOSTDOWN 112           /* Host is down */
#define EHOSTUNREACH 113        /* No route to host */
#define EALREADY 114            /* Operation already in progress */
#define EINPROGRESS 115         /* Operation now in progress */
#define ESTALE 116              /* Stale NFS file handle */
#define EUCLEAN 117             /* Structure needs cleaning */
#define ENOTNAM 118             /* Not a XENIX named type file */
#define ENAVAIL 119             /* No XENIX semaphores available */
#define EISNAM 120              /* Is a named type file */
#define EREMOTEIO 121           /* Remote I/O error */
#define EDQUOT 122              /* Quota exceeded */

#define ENOMEDIUM 123           /* No medium found */
#define EMEDIUMTYPE 124         /* Wrong medium type */

#define ENSROK 0
#define ENSRNODATA 160
#define ENSRFORMERR 161
#define ENSRSERVFAIL 162
#define ENSRNOTFOUND 163
#define ENSRNOTIMP 164
#define ENSRREFUSED 165
#define ENSRBADQUERY 166
#define ENSRBADNAME 167
#define ENSRBADFAMILY 168
#define ENSRBADRESP 169
#define ENSRCONNREFUSED 170
#define ENSRTIMEOUT 171
#define ENSROF 172
#define ENSRFILE 173
#define ENSRNOMEM 174
#define ENSRDESTRUCTION 175
#define ENSRQUERYDOMAINTOOLONG 176
#define ENSRCNAMELOOP 177
#define OPTION_DEG 200

#endif

static inline void
sbr_set_errno (int err)
{
  errno = err;
}

#ifdef __cplusplus
/* *INDENT-OFF* */
}
/* *INDENT-ON* */
#endif

#endif
